using MongoDB.Bson.Serialization.Attributes;
using System;

namespace Sustainalytics.ClientDW.Entities
{
    [BsonIgnoreExtraElements]
    public partial class CorporateData : CorporateDataBasic
    {
        public string CompanyNameLowercase { get; set; }
        public string CompanyNameUrlFriendly { get; set; }

        public string MainExchangeTicker { get; set; }
        public string MainExchange { get; set; }
        public string MainTicker { get; set; }

        public string PublishedMic { get; set; }
        public string CountryOfExchangeCode { get; set; }

        public Guid? ResearchParentId { get; set; }

        public string CompanyType { get; set; }
        public string TemplateType { get; set; }

        public string Country { get; set; }
        public string Region { get; set; }

        public string GovernanceRegionCode { get; set; }
        public string GovernanceRegionName { get; set; }

        public string PeerGroup { get; set; }

        public MainIdentifiers MainIdentifiers { get; set; }

        public string SustainalyticsSector { get; set; }

        public string SustainalyticsIndustryGroup { get; set; }

        public string SustainalyticsIndustry { get; set; }

        public string SustainalyticsSubIndustry { get; set; }

        public string SubPeerGroup { get; set; }
        public int SubPeerGroupId { get; set; }

        public int CapitalIqId { get; set; }

        public double? HeadquarterLatitude { get; set; }
        public double? HeadquarterLongitude { get; set; }

        public double MarketCapitalization { get; set; }
        public int? TotalEmployees { get; set; }

        public string Address { get; set; }
        public string CompanyPhone { get; set; }
        public string Website { get; set; }

        public string BusinessDescription { get; set; }

        public DateTime? LastControversyUpdate { get; set; }

        public CorporateDataTimestamps Timestamps { get; set; }

        public override string ToString()
            => $"Id: {Id}, CapitalIqId: {CapitalIqId}, Name: {CompanyName}";
    }
}
